home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-l7200 / include / mach / time.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.8 KB  |  74 lines

  1. /*
  2.  * arch/arm/mach-l7200/include/mach/time.h
  3.  *
  4.  * Copyright (C) 2000 Rob Scott (rscott@mtrob.fdns.net)
  5.  *                    Steve Hill (sjhill@cotw.com)
  6.  *
  7.  * Changelog:
  8.  *   01-02-2000    RS    Created l7200 version, derived from rpc code
  9.  *   05-03-2000    SJH    Complete rewrite
  10.  */
  11. #ifndef _ASM_ARCH_TIME_H
  12. #define _ASM_ARCH_TIME_H
  13.  
  14. #include <mach/irqs.h>
  15.  
  16. /*
  17.  * RTC base register address
  18.  */
  19. #define RTC_BASE    (IO_BASE_2 + 0x2000)
  20.  
  21. /*
  22.  * RTC registers
  23.  */
  24. #define RTC_RTCDR    (*(volatile unsigned char *) (RTC_BASE + 0x000))
  25. #define RTC_RTCMR    (*(volatile unsigned char *) (RTC_BASE + 0x004))
  26. #define RTC_RTCS    (*(volatile unsigned char *) (RTC_BASE + 0x008))
  27. #define RTC_RTCC    (*(volatile unsigned char *) (RTC_BASE + 0x008))
  28. #define RTC_RTCDV    (*(volatile unsigned char *) (RTC_BASE + 0x00c))
  29. #define RTC_RTCCR    (*(volatile unsigned char *) (RTC_BASE + 0x010))
  30.  
  31. /*
  32.  * RTCCR register values
  33.  */
  34. #define RTC_RATE_32    0x00      /* 32 Hz tick */
  35. #define RTC_RATE_64    0x10      /* 64 Hz tick */
  36. #define RTC_RATE_128    0x20      /* 128 Hz tick */
  37. #define RTC_RATE_256    0x30      /* 256 Hz tick */
  38. #define RTC_EN_ALARM    0x01      /* Enable alarm */
  39. #define RTC_EN_TIC    0x04      /* Enable counter */
  40. #define RTC_EN_STWDOG    0x08      /* Enable watchdog */
  41.  
  42. /*
  43.  * Handler for RTC timer interrupt
  44.  */
  45. static irqreturn_t
  46. timer_interrupt(int irq, void *dev_id)
  47. {
  48.     struct pt_regs *regs = get_irq_regs();
  49.     do_timer(1);
  50. #ifndef CONFIG_SMP
  51.     update_process_times(user_mode(regs));
  52. #endif
  53.     do_profile(regs);
  54.     RTC_RTCC = 0;                /* Clear interrupt */
  55.  
  56.     return IRQ_HANDLED;
  57. }
  58.  
  59. /*
  60.  * Set up RTC timer interrupt, and return the current time in seconds.
  61.  */
  62. void __init time_init(void)
  63. {
  64.     RTC_RTCC = 0;                /* Clear interrupt */
  65.  
  66.     timer_irq.handler = timer_interrupt;
  67.  
  68.     setup_irq(IRQ_RTC_TICK, &timer_irq);
  69.  
  70.     RTC_RTCCR = RTC_RATE_128 | RTC_EN_TIC;    /* Set rate and enable timer */
  71. }
  72.  
  73. #endif
  74.